package javaCode.chapter13.list;

import java.util.Vector;

/**
 * @author 徐州城
 * @version 1.0
 */
@SuppressWarnings("all")
public class Vector_ {
    public static void main(String[] args) {
        Vector vector = new Vector();
        for (int i = 1; i <= 10; i++) {
            vector.add(i);
        }
        vector.add(100);
        //解读源码
        //1. new Vector() 底层
        /*
         public Vector() {
            this(10);
        }
        2. vector.add(i)
        2.1 //下面这个方法就是添加数据 vector集合
        public synchronized boolean add(E e) {
            modCount++;
            ensureCapacityHelper(elementCount + 1);
            elementData[elementCount++] = e;
            return true;
        }
        2.2 //确定是否需要扩容
        private void ensureCapacityHelper(int minCapacity) {
            // overflow-conscious code
            if (minCapacity - elementData.length > 0)
                grow(minCapacity);
        }
        2.3 //如果 需要的数组大小 不够了，就扩容，扩容的算法
            //int newCapacity = oldCapacity + ((capacityIncrement > 0) ?
            //                                 capacityIncrement : oldCapacity);
            //capacityIncrement=0   就是扩容两倍
        private void grow(int minCapacity) {
            // overflow-conscious code
            int oldCapacity = elementData.length;
            int newCapacity = oldCapacity + ((capacityIncrement > 0) ?
                                             capacityIncrement : oldCapacity);
            if (newCapacity - minCapacity < 0)
                newCapacity = minCapacity;
            if (newCapacity - MAX_ARRAY_SIZE > 0)
                newCapacity = hugeCapacity(minCapacity);
            elementData = Arrays.copyOf(elementData, newCapacity);
        }
         */
    }
}
